package com.bytz.modules.cms.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bytz.modules.cms.order.entity.OrderItem;
import com.bytz.modules.cms.order.entity.OrderPickUpDetail;

import java.util.List;

/**
 * <p>
 * 莱宝CMS—订单管理-订单商品表 服务类
 * </p>
 *
 * @author KyleWang
 * @since 2022-10-10
 */
public interface IOrderItemService extends IService<OrderItem> {

    /**
     * 根据订单信息删除订单商品
     */
    boolean removeByOrderId(String orderId);

    /**
     * 根据订单id获取订单商品
     */
    List<OrderItem> getByOrderId(String orderId);

    /**
     * 根据订单id和商品编码获取订单商品
     */
    List<OrderItem> getByOrderIdAndProductNumber(String orderId, String productNumber);

    /**
     * 根据订单id保存订单详情
     */
    List<OrderItem> mergeItem(String orderId, List<OrderItem> newData);

    /**
     * 更新预付价格
     */
    void updatePrepayPrice(List<OrderItem> orderItems);

    /**
     * 没有线上付款，直接将首付提交
     * @param orderItems 订单行
     */
    void directSubmitPrepay(List<OrderItem> orderItems);

    /**
     * 更新预付的已付价格
     * @param orderId 订单Id
     */
    void submitPrepay(String orderId);

    /**
     * 直接将尾款提交
     */
    void submitBalancePay(List<OrderItem> orderItems, List<OrderPickUpDetail> pickUpDetails);
}
